var Docente;
var Materia;
var Testo;
var Voto;
var TipoVerifica;
var Verifica;
var Giorno;
var Ora;
var Orario;
var Agenda;


function defineObjects(){
	if (window.openDatabase) {
		persistence.store.websql.config(persistence, "jquerymobile", 'database', 5 * 1024 * 1024);
	} else {
		persistence.store.memory.config(persistence);
	}
	
	var Docente = defineDocente();
	var Materia = defineMateria();
	var Testo = defineTesto();
	var Voto = defineVoto();
	var TipoVerifica = defineTipoVerifica();
	var Verifica = defineVerifica();
	var Giorno = defineGiorno();
	var Ora = defineOra();
	var Orario = defineOrario();
	var Agenda = defineAgenda();
	
	Docente.hasMany('materias', Materia, 'docente');
	
	Materia.hasMany('testos', Testo, 'materia');
	Materia.hasMany('verificas', Verifica, 'materia');
	
	Verifica.hasOne('tipoVerifica', TipoVerifica);
	Verifica.hasOne('voto', Voto);
	
	Ora.index('descrizione', {unique:true});
	
	Orario.hasOne('giorno', Giorno);
	Orario.hasOne('ora', Ora);
	Orario.hasOne('materia', Materia);
	
	Agenda.hasOne('materia', Materia);
	Agenda.index('data', {unique:true});
	
	persistence.flush();
	persistence.schemaSync();
}

// DOCENTE
function defineDocente(){
	if (this.Docente == null){
		this.Docente = persistence.define('Docente', {
			nome: "TEXT",
			cognome: "TEXT",
			data_inizio: "DATE",
			data_fine: "DATE"
		});
	}
	return Docente;
}

// MATERIA
function defineMateria(){
	if (this.Materia == null){
		this.Materia = persistence.define('Materia', {
			descrizione: "TEXT",
			color: "TEXT"
		});
	}
	return Materia;
}

// TESTO
function defineTesto(){
	if (this.Testo == null){
		this.Testo = persistence.define('Testo', {
			descrizione: "TEXT"
		});
	}
	return Testo;
}

// VOTO
function defineVoto(){
	if (this.Voto == null){
		this.Voto = persistence.define('Voto', {
			descrizione: "TEXT"
		});
	}
	return Voto;
}

// TIPO_VERIFICA
function defineTipoVerifica(){
	if (this.TipoVerifica == null){
		this.TipoVerifica = persistence.define('TipoVerifica', {
			descrizione: "TEXT"
		});
	}
	return TipoVerifica;
}

// VERIFICA
function defineVerifica(){
	if (this.Verifica == null){
		this.Verifica = persistence.define('Verifica', {
			data: "DATE"
		});
	}
	return Verifica;
}

// GIORNO
function defineGiorno(){
	if (this.Giorno == null){
		this.Giorno = persistence.define('Giorno', {
			descrizione: "TEXT",
			order_col: "INT",
			flag_attivo: "INT"
		});
	}
	return Giorno;
}

// ORA
function defineOra(){
	if (this.Ora == null){
		this.Ora = persistence.define('Ora', {
			descrizione: "TEXT"
		});
	}
	return Ora;
}

// ORARIO
function defineOrario(){
	if (this.Orario == null){
		this.Orario = persistence.define('Orario', {
			color: "TEXT",
			data_inizio: "DATE",
			data_fine: "DATE"
		});
	}
	return Orario;
}

// AGENDA
function defineAgenda(){
	if (this.Agenda == null){
		this.Agenda = persistence.define('Agenda', {
			data: "DATE",
			descrizione: "TEXT"
		});
	}
	return Agenda;
}
